📜 [專欄新文章] Gas Efficient Card Drawing in Solidity
✍️ Ping Chen
📥 歡迎投稿: https://medium.com/taipei-ethereum-meetup #徵技術分享文 #使用心得 #教學文 #medium
Assign random numbers as the index of newly minted NFTs
Scenario
The fun of generative art NFT projects depends on randomness. The industry standard is “blind box”, where both the images’ serial number and the NFTs’ index are predetermined but will be shifted randomly when the selling period ends. (They call it “reveal”) This approach effectively solves the randomness issue. However, it also requires buyers to wait until the campaign terminates. What if buyers want to know the exact card right away? We’ll need a reliable onchain card drawing solution.
The creator of Astrogator🐊 isn’t a fan of blind boxes; instead, it thinks unpacking cards right after purchase is more interesting.
Spec
When initializing this NFT contract, the creator will determine the total supply of it. And there will be an iterable function that is randomly picking a number from the remaining pool. The number must be in range and must not collide with any existing ones.
Our top priority is accessibility/gas efficiency. Given that gas cost on Ethereum is damn high nowadays, we need an elegant algorithm to control gas expanse at an acceptable range.
Achieving robust randomness isn’t the primary goal here. We assume there’s no strong financial incentive to cheat, so the RNG isn’t specified. Implementers can bring their own source of randomness that they think is good enough.
Implementation
Overview
The implementation is pretty short and straightforward. Imagine there’s an array that contains all remaining(unsold) cards. When drawIndex() is called, it generates a (uniform) random seed to draw a card from the array, shortens the array, and returns the selected card.
Algorithm
Drawing X cards from a deck with the same X amount of cards is equal to shuffling the deck and dealing them sequentially. It’s not a surprise that our algorithm is similar to random shuffling, and the only difference is turning that classic algo into an interactive version.
A typical random shuffle looks like this: for an array with N elements, you randomly pick a number i in (0,N), swap array[0] and array[i], then choose another number i in (1,N), swap array[1] and array[i], and so on. Eventually, you’ll get a mathematically random array in O(N) time.
So, the concept of our random card dealing is the same. When a user mints a new card, the smart contract picks a number in the array as NFT index, then grabs a number from the tail to fill the vacancy, in order to keep the array continuous.
Tweak
Furthermore, as long as the space of the NFT index is known, we don’t need to declare/initialize an array(which is super gas-intensive). Instead, assume there’s such an array that the n-th element is n, we don’t actually initialize it (so it is an array only contains “0”) until the rule is broken.
For the convenience of explanation, let’s call that mapping cache. If cache[i] is empty, it should be interpreted as i instead of 0. On the other hand, when a number is chosen and used, we’ll need to fill it up with another unused number. An intuitive method is to pick a number from the end of the array, since the length of the array is going to decrease by 1.
By doing so, the gas cost in the worst-case scenario is bound to be constant.
Performance and limitation
Comparing with the normal ascending index NFT minting, our random NFT implementation requires two extra SSTORE and one extra SLOAD, which cost 12600 ~ 27600 (5000+20000+2600) excess gas per token minted.
Theoretically, any instantly generated onchain random number is vulnerable. We can restrict contract interaction to mitigate risk. The mitigation is far from perfect, but it is the tradeoff that we have to accept.
ping.eth
Gas Efficient Card Drawing in Solidity was originally published in Taipei Ethereum Meetup on Medium, where people are continuing the conversation by highlighting and responding to this story.
👏 歡迎轉載分享鼓掌
同時也有71部Youtube影片,追蹤數超過2萬的網紅生かし屋 IKASHIYA CULINARY ART,也在其Youtube影片中提到,ストレート法で作る基本の山食パン(山型食パン・イギリス食パン)の作り方です ストレート法は最初から材料をすべて合わせる作り方で、 メリット:短時間で出来る、風味が良い デメリット:ボリュームが出にくい、でんぷんの老化がはやい=すぐぱさつく という特徴があります おすすめの強力粉は窯伸びの良い...
「total amount」的推薦目錄:
- 關於total amount 在 Taipei Ethereum Meetup Facebook 的最讚貼文
- 關於total amount 在 Facebook 的最佳貼文
- 關於total amount 在 創業小聚 Meet Startup Facebook 的最佳解答
- 關於total amount 在 生かし屋 IKASHIYA CULINARY ART Youtube 的精選貼文
- 關於total amount 在 生かし屋 IKASHIYA CULINARY ART Youtube 的最讚貼文
- 關於total amount 在 Jessica Chong-Jhingoree Youtube 的最佳貼文
- 關於total amount 在 Amount Spent | Facebook Business Help Center 的評價
- 關於total amount 在 Find the total amount given the percentage of a partial amount 的評價
total amount 在 Facebook 的最佳貼文
Let's celebrate International Coffee month with NESCAFÉ®. During this coffee month, NESCAFÉ® rewarding their loyal customers with amazing prizes. “Peraduan NESCAFÉ® – Vibe Kopi” WhatsApp contest, offering 324 prizes worth a total of RM290,000.00 to be won, including 18 x Honda Vario 150 Repsol! The contest will be held from 6 September – 7 November 2021.
Here is how to participate:
Step 1 : Purchase a minimum of RM6 worth of any participating NESCAFÉ® Can/Bottle/Cup products in a single original receipt from any participating outlets (in-store or online).
Step 2 : Write your full name and identification number on the front of the receipt and submit a CLEAR picture of the receipt and total amount to the WhatsApp number: 018-388 0070. The contest participation is accepted via WhatsApp only.
More information check out @Nestle.Malaysia
#NESCAFEVibeKopi #NESCAFECans #readytodrink #coffee @inkpr.my
total amount 在 創業小聚 Meet Startup Facebook 的最佳解答
Aiello announced this week that it has closed its Pre-Series A funding round, bringing the total funding amount to USD$ 7M since the company was established in 2019.
https://meet-global.bnext.com.tw/articles/view/47463
total amount 在 生かし屋 IKASHIYA CULINARY ART Youtube 的精選貼文
ストレート法で作る基本の山食パン(山型食パン・イギリス食パン)の作り方です
ストレート法は最初から材料をすべて合わせる作り方で、
メリット:短時間で出来る、風味が良い
デメリット:ボリュームが出にくい、でんぷんの老化がはやい=すぐぱさつく
という特徴があります
おすすめの強力粉は窯伸びの良い「スーパーキングやゴールデンヨット」、老化が遅く風味もいいし窯伸びもいいし作業もしやすい「ベルムーラン」がおすすめです(動画ではベルムーランを使用)
【型生地比容積について】
自分の持っている型に合わせて生地量を調整します
1.5斤と書かれてても1.2斤しかなかったり、型によって全然違うので必須です
この型と容量と生地の比率を型生地比容積といいます
型の容量÷型生地比容積=生地量
例:1625ml(1斤弱)÷3.5=約464g
3つに分けて入れる場合は1つあたり464÷3=155gになります
型生地比容積の目安
角食:3.8~4
山食:3.6前後
(数字が大きいほどふわふわで、数字が小さいほどみっちり)
ベーカーズパーセントと比容積からレシピの調整も出来ますが、
計算が面倒なので粉300gとか多めに作って生地量を食パンに使い
残りの生地は丸パンなどにすると楽だし無駄になりません
型生地比容積についてより詳しくは↓
https://www.ikashiya.com/entry/katakiji-hiyouseki
【材料】
ベーカーズパーセント(合計:194)
・強力粉 100
・砂糖 8
・スキムミルク 3
・塩 2
・インスタントドライイースト 1
・水 72
・バター 8
粉300での分量(1斤目安)
・強力粉 300g
・砂糖 24g
・スキムミルク 9g
・塩 6g
・インスタントドライイースト 3g
・水 216g
・バター 24g
【準備】
・バターを常温においておく
・型に離型油を塗る
【作り方】
1. 【生地作り~1次発酵】バター以外の材料をすべて合わせてグルテン膜が出るまでこね、バターを加えてさらにこねる
2. より薄いグルテン膜が出るまでこね(こね上げ26℃目安)、丸めてボウルに入れてラップをし30℃で60分発酵させて、打ち粉をして台に取り出す
3. 上から押さえてガスを抜いて広げ、上下左右から3つ折り×2で折りたたみボウルに入れてラップをし、30℃で30分発酵させる
4. 【分割~ベンチタイム】生地量の1/3ずつに分割してガスを抜き、きれいな面が外側にし表面を張らせるように丸める
5. かたく絞った濡れ布巾をかけて25分ベンチタイム(生地をゆるめて成形しやすくする/残った生地は同様にして丸パンなどに活用)
6. 【成形~2次発酵】めん棒で長方形にのばしつつガスを抜き(周りの気泡は手で潰す)、上下から1/3折りたたんで生地をくっつける
7. 奥から手前に少し張らせるように巻いてとじる(最初芯を作り、トップを持って下にくっつけるイメージで3回転~3回転半)
8. 離型油を塗った型に端→真ん中の順で入れ、蓋をして35℃で50分を目安に2次発酵(オーブンで発酵させる場合は予熱時間を考慮しはやめに取り出す)
9. 【焼成/180℃に予熱】生地が型のギリギリまで膨らんだら発酵完了、180℃に予熱したオーブンで焼成する
10. 180℃で30分を目安に焼き、焼き上がったら台に2~3回落として蒸気を抜き(腰折れを防ぐため)、すぐに取り出し冷ます
--------------------------------------------------------------------------
【動画でよく使ってる調理器具】
フライパン(20cm):https://amzn.to/2QyY1ny
フライパン(24cm):https://amzn.to/2UtNvz5
フライパン(24cm深型):https://amzn.to/3dj5DEp
鉄フライパン(22cm):https://amzn.to/3a8hqmR
アルミフライパン(24cm):https://amzn.to/3dj6tRz
片手浅型鍋(18cm):https://amzn.to/2QzGXha
片手浅型鍋(21cm):https://amzn.to/2U7ta3o
片手鍋(16cm):https://amzn.to/2QzCj2x
片手鍋(20cm):https://amzn.to/3bd0lZa
ソースパン:https://amzn.to/2U9keuI
まな板:https://amzn.to/2J1fQHI
ガスコンロ:https://amzn.to/3bdtvYa
牛刀:https://www.jikko.jp/fs/jikko/54803
ペティ:https://www.jikko.jp/fs/jikko/54800
撮影機材
カメラボディ:https://amzn.to/2xSXZAd
動画レンズ:https://amzn.to/3t7sfPB
写真レンズ:https://amzn.to/2U7HcCb
録音:https://amzn.to/2U9cGYT
※製品のURLはAmazonアソシエイトのリンクを使用しています
--------------------------------------------------------------------------
▼サブチャンネル(料理実験チャンネル)
https://www.youtube.com/channel/UCqIW0OHh8k2np5ZNz3wz8sg
▼ブログ
http://www.ikashiya.com/
▼Twitter
https://twitter.com/sakihirocl
▼Instagram
https://www.instagram.com/sakiyamahiroshi/
--------------------------------------------------------------------------
↓using translation software.
[Ingredients]
Bakers percent (total: 194)
・Bread flour 100
・Sugar 8
・Skim Milk 3
・Salt 2
・Instant dry yeast 1
・Water 72
・Butter 8
The amount of the flour 300.
・Bread flour 300 g
・Sugar 24 g
・Skim milk 9g
・Salt 6g
・Instant dry yeast 3g
・Water 216 g
・Butter 24 g
[Preparation]
・Leave the butter at room temperature.
・Spread mold release oil on the mold.
[How to make]
1. [Making the dough ~ primary fermentation] Mix all the ingredients except butter and knead it until the gluten film comes out. Add butter and knead it more.
2. Knead it (knead it up to around 26 °C) until a thinner gluten film comes out. Round it and put it in a bowl. Cover it with a plastic wrap and let it ferment for 60 minutes at 30 °C. Dust it with flour and take it out on a counter top.
3. Press down from the top to release the gas and spread it out. Fold it 3 times from top, bottom, left and right. Put it in a bowl and wrap it then ferment it for 30 minutes at 30 °C.
4. [Divide ~ bench time] Divide it to 1/3 of the amount of the dough then release the gas. Round it so the clean side is on the outside and the surface will stretch.
5. Cover it with a tightly squeezed damp dishcloth and bench it for 25 minutes (loosen the dough to make it easier to shape it/use the rest of the dough in the same way for round bread, etc.).
6. [Shaping ~ Secondary fermentation] Stretch it to a rectangle with a rolling pin and release the gas (crush the air bubbles around it with your hand). Fold it from the top and bottom to 1/3 and stick the dough together.
7. Roll it up and close it so that it is slightly stretched from the back to the front (Make the core first and hold the top and stick it on the bottom. Turn it around 3-3.5 times.).
8. Put it in the mold spread with mold release oil in the order of the edge to the center. Cover the lid and let it undergo secondary fermentation at 35 °C for around 50 minutes (take it out without considering the preheating time if you are fermenting it in the oven).
9. [Bake/Preheat to 180 °C] When the dough rises to the edge of the mold, the fermentation is complete. Bake it in the oven preheated to 180 °C.
10.Bake it at 180 °C for around 30 minutes. When it finishes baking, drop it on a counter 2 ~ 3 times to remove the steam (to prevent it from breaking around the waist). Take it out immediately and let it cool.

total amount 在 生かし屋 IKASHIYA CULINARY ART Youtube 的最讚貼文
濃厚美味しい本格ティラミスの作り方
本格的な感じで作りますが、簡単お手軽な作り方も紹介しています
市販のビスケットでインスタントコーヒーを使い、卵黄なしでも作れますのでぜひ~
【材料】
サヴォイアルディ(市販のビスケットで代用可)
・卵黄 2個
・グラニュー糖(卵黄用) 15g
・卵白 2個
・グラニュー糖(卵白用) 30g
・薄力粉 50g
・粉糖 適量
ザバイオーネ
・卵黄 2個
・グラニュー糖 25g
・マルサラ酒(甘口) 40g
(ラム酒やアマレットなど他の洋酒でもOK)
ザバイオーネ・クリーム
・マスカルポーネチーズ 200g
・グラニュー糖 50g
・ホワイトチョコ(お好み) 20g
・ザバイオーネ 全量
・マルサラ酒 お好みの量
・生クリーム 150g
エスプレッソ液
・エスプレッソ(濃いめのインスタントやドリップコーヒーで代用可)
・グラニュー糖 お好みの量
・マルサラ酒 お好みの量
仕上げ
・ココアパウダーやコーヒーパウダー 適量
【準備】
・粉糖、薄力粉はふるって使う
・オーブンを180℃に予熱する
・クリームを作る少し前にマスカルポーネを常温に出しておく
【作り方】
1. 【サヴォイアルディ/180℃に予熱】ボウルに卵黄2個・グラニュー糖15gを泡立て器ですり混ぜる
2. 別のボウルに卵白2個を入れて白っぽくなるまで泡だて、グラニュー糖30gのうち半分を入れて泡立てる
3. ツヤが出てきたら残りのグラニュー糖を加え、角が立つまで泡立てメレンゲを作る
4. 卵黄の方にメレンゲの半量を入れてざっと馴染むまで混ぜ、薄力粉50gをふるい入れる
5. ヘラに持ち替えて粉っぽさが無くなる直前くらいまでさっくり切り混ぜ、残りのメレンゲを加える
6. あまり泡を潰さないように切り混ぜ、なめらかに混ざったら丸口金をつけた絞り袋に入れる
7. オーブン用シートを敷いた天板に棒状に絞り出し、粉糖を全体にふるいかけ、消えた頃にもう1回粉糖をふるいかける
8. 180℃に予熱したオーブンで20~25分を目安に、軽く色づくまで焼いて冷ましておく
9. 【ザバイオーネ】ボウルに卵黄2個・グラニュー糖25g・マルサラ酒40gを合わせて混ぜる
10. 鍋で加熱した沸騰しないくらいのお湯で湯煎にかけ、混ぜながら70℃程度まで温める(より殺菌を意識するなら80℃)
11. 温度が上がると泡が消えとろみつく、湯煎から外し好みでふんわり泡立ててもOK
12. 【ザバイオーネ・クリーム】ボウルにマスカルポーネチーズ200gをほぐし、グラニュー糖50gをすり混ぜる
13. 溶かしたホワイトチョコ20g・ザバイオーネをなめらかに混ぜ、好みでマルサラ酒も加え混ぜる
14. 生クリーム150gを軽く角が立つまで泡だて、↑に半量ずつ加えてなめらかに切り混ぜる
15. 【エスプレッソ液】エスプレッソor濃い目に作ったコーヒーに、好みでグラニュー糖・マルサラ酒を混ぜておく
16. 【仕上げ】容器にサヴォイアルディ(ビスケット)を敷き、エスプレッソ液を染み込ませる(もしくは染み込ませてから容器に入れる)
17. ザバイオーネ・クリームを入れて均し、エスプレッソ液を染み込ませたサヴォイアルディ→ザバイオーネ・クリームと重ねていく
18. 冷蔵庫で冷やし固め、仕上げにココアパウダーやコーヒーパウダーをふるいかけて出来上がり
--------------------------------------------------------------------------
▼サブチャンネル(料理実験チャンネル)
https://www.youtube.com/channel/UCqIW0OHh8k2np5ZNz3wz8sg
▼ブログ
http://www.ikashiya.com/
▼Twitter
https://twitter.com/sakihirocl
▼Instagram
https://www.instagram.com/sakiyamahiroshi/
--------------------------------------------------------------------------
↓using translation software.
[Ingredients]
Savoie Ardi (store-bought biscuits can be substituted)
・Two egg yolks
・Granulated sugar (for the egg yolk) 15 g
・Egg whites 2 pieces
・Granulated sugar (for egg whites) 30 g
・Cake flour 50 g
・Powdered sugar as needed
Zabaione
・Two egg yolks
・Granulated sugar 25 g
・Marusara Sake (sweet) 40 g
(You can also use other foreign liquors such as rum or amaretto.)
Sabaione Cream
・Mascarpone cheese 200 g
・Granulated sugar 50 g
・White chocolate (optional) 20 g
・Sabaione total amount
・Marsala Sake, as much as you like
・Heavy cream 150 g
espresso solution
・Espresso (strong instant or drip coffee can be substituted)
・Granulated sugar as much as you like
・Marsala Sake, as much as you like
Finish
・Appropriate amount of cocoa powder or coffee powder
[How to make]
1. [Savoie Hardy/Preheat to 180 °C] Mix 2 egg yolks and 15 g of granulated sugar with a whisk.
2. Add 2 egg whites in a different bowl and whip it until it becomes whitish. Add half of 30 g of granulated sugar and whip it.
3. Add the rest of the granulated sugar when it glazes. Whip it until it peaks to make a meringue.
4. Add half of the meringue to the egg yolk and mix it until it blends in. Sift in 50 g of weak flour.
5. Switch to a spatula and lightly mix it until the powdery feel is gone. Add the rest of the meringue.
6. Mix it so it doesn't crush the bubbles too much. Add it in a piping bag with a round cap when it mixes smoothly.
7. Squeeze it out into a stick shape on a baking sheet covered with baking paper. Sift the powdered sugar entirely. Sift it once again when it disappears.
8.Bake it in the oven preheated to 180 °C for around 20 to 25 minutes until it lightly browns then let it cool.
9. [The Baione] Mix 2 egg yolks, 25 g of granulated sugar, and 40 g of marsala sake in a bowl.
10. Boil it in hot water heated in a pot until it doesn't boil. Warm it to around 70 °C as you mix it (80 °C if you want to sterilize more).
11. The bubbles will disappear and thicken when the temperature rises. You can remove it from the hot water and whip it softly if you'd like.
12. [The Baione Cream] Loosen 200 g of mascarpone cheese in a bowl and mix in 50 g of granulated sugar.
13. Mix 20 g of melted white chocolate and zabaione smoothly. Add marsala sake if you'd like and mix it.
14. Whisk 150 g of whipped cream until it lightly forms peaks. Add half of it at a time to ↑ and mix it smoothly.
15. [Espresso liquid] Mix granulated sugar and marsala sake to your liking with espresso or strong coffee.
16. [Finish] Lay out the savoie aldi (biscuit) in the container and let it soak in the espresso liquid (or let it soak then put it in the container).
17. Add the Xabione cream and flatten it. Layer it with Savoiardi soaked with espresso then Xabione cream.
18. Chill it in the fridge to harden it. Finish it off by sifting cocoa powder or coffee powder and it will be complete.

total amount 在 Jessica Chong-Jhingoree Youtube 的最佳貼文
Hello!
Thanks for stopping by.
I am sure most of you have watched countless sourdough videos available out there, and most are mix by hand tutorials.
If you find joy in touching your dough and don’t mind the mess, well, good for you ??
But if you prefer a no-fuss and less messy way without compromising the end result, this recipe is for you!
See, I am impatient. I work a mentally demanding full time job, and when I make sourdough, I don’t like to fuss over them.
Normally, I maximise my yield for each batch by making 4-6 (sometimes 8!) loaves of sourdough, because making 1 or 10 loaves to me takes the same amount of preparation and effort.
Anyway, here’s the recipe.
Enjoy!
Ingredients:
300g Bob’s Artisan Bread Flour (or any high protein bread flour, at least 12-13% protein)
65g starter (tripled, use at peak)
233g water (room temperature)
6g Pink Himalayan Salt (or regular salt)
Method:
1. Autolyse 30 minutes
2. Add starter, mix, wait 15 minutes (I sometimes add salt together with starter when I am not in the mood and still get great results)
3. Add salt, mix, wait 15 minutes
4. Transfer to a bulking dish
5. Coil fold x 1
6. Coil fold x 2
7. Coil fold x 3
8. Coil fold x 4 - skip this step if your dough is strong
9. Leave to bulk
10. Total bulk 4 hours at 28C
11. Final shape
12. Cold retard overnight at 3C - make sure your fridge temperature no more than 3C!
13. Preheat oven at 250C, fan mode, for 1 hour
14. Bake at 250C, fan mode, for 35 minutes, lid close
15. And 250C, fan mode, for 5 minutes, lid off
16. Let bread cool completely before cutting, at least 1 hour
—————————————————————————————
#sourdough #opencrumb #sourdoughbread
Notes:
Always begin with a strong and healthy starter.
Make sure your dough has increased 50% in size.
As beginners, I know it is very hard to determine if your dough has finished its bulk fermentation based on the look and feel, due to the lack of experience. I know that feeling very well, because I was once that lost, clueless beginner myself.
After tinkering with sourdough for about a year, I have come up with a rough timing guide for bulk fermentation based on room/kitchen temperature, well, sort of like a cheat sheet, so you can get the hang of sourdough bread making and get good results every time.
Remember, bulk fermentation starts when starter is mixed into the dough.
Hope this helps!
=========================================
23C = 6 1/2 hours
24C = 6 hours
25C = 5 1/2 hours
26C = 5 hours
27C = 4 1/2 hours
28C = 4 hours
29C = 3 1/2 hours
30C = 3 hours
31C = 2 1/2 hours
—————————————————————————————
Instagram:
Personal // https://instagram.com/puterijessica
Soap Making // https://instagram.com/thesoapproject
Sourdough // https://instagram.com/thefoodprojectmy
—————————————————————————————
Purchase Links:
Bob’s Artisan Bread Flour // https://www.amazon.com/Bobs-Red-Mill-Artisan-Ounces/dp/B019IKHF3M
Pink Himalayan Salt // https://www.amazon.com/HQOExpress-Organic-Pink-Himalayan-Salt/dp/B07QQL7VHP/ref=mp_s_a_1_6?dchild=1&keywords=himalayan+pink+salt&qid=1623762046&sr=8-6
Tanita Kitchen Scale // https://www.amazon.com/TANITA-Tonita-digital-cooking-KD-321/dp/B002WBTFDI
Tanita Room Thermometer // https://www.amazon.co.jp/-/en/Tanita-Thermometer-Humidity-Digital-Tabletop/dp/B010CK4Z9Y
Ikea Foljsam Bulking Dish // https://www.amazon.com/IKEA-503-112-69-Följsam-Clear-Glass/dp/B07L4L1YQC/ref=mp_s_a_1_3?dchild=1&keywords=ikea+foljsam&qid=1623762611&sr=8-3
Bread Banneton // https://www.amazon.co.uk/Banneton-Brotform-Rising-Proofing-Proving/dp/B01CCLAPQS
Bread Lame // https://www.amazon.com/UPKOCH-Wooden-Slashing-Plastic-Protective/dp/B081YNTM23/ref=mp_s_a_1_35?dchild=1&keywords=bread+lame&qid=1623930160&sr=8-35
Kuhn Rikon Bread Knife // https://www.amazon.com/Kuhn-Rikon-FBA_23505-Bread-Knife/dp/B009DOAINS
—————————————————————————————
Equipment Used:
Camera // iPhone XS Max
Mic // Shure MV88
Video Editing // InShot Pro
Audio Editing // Cubase Pro 10.5
—————————————————————————————
Music Credits:
Music by frumhere - the broken heart gang - https://thmatc.co/?l=23888EC7
Intro Music:
Music: Intro
Musician: Jeff Kaale

total amount 在 Amount Spent | Facebook Business Help Center 的必吃
Amount Spent. 10,476 views. The estimated total amount of money you've spent on your campaign, ad set or ad during its schedule. This metric is estimated. ... <看更多>